<?php

function title($t=null){
	static $ts = array();
	if ($t) $ts[] = $t;
	else return implode('-', $ts);
}

// url ? 参数解析
function param($k = null, $v = null)
{
	static $params = array();
	return arrayParam($params, $k, $v);
}

//通用数组参数解析
function arrayParam(&$params, $k, $v)
{
	// () 返回整个参数数组。
	if ($k == null) return $params;	
	// ('new')	// 返回单个参数的值。
	if ($v == null) return array_key_exists($k, $params) ? $params[$k] : false;
	// ('new',true) 设置参数的内容。
	$params[$k] = $v;
	return true;
}

// 切换模板，赋值的快捷方式。
function template($temp) { assign('view', $temp); }

// 切换布局，赋值的快捷方式。
function layout($layout) { assign('layout', $layout); }

//显而易见的赋值
function assign($k=null, $v=null, $append=null){
	static $data = array('layout'=>'default');
	if (($k == null) && ($v == null)) return $data;	// 返回整个数据。 k=null,v=null
	if ($v == null) return $data[$k];				// 返回某个值。	  k != null, v=null
	if ($k == null) { $data=array(); return true;}  // 特殊用法特殊操作，很少见很少用的。  k=null, v!=null 

	if ($append && $data[$k]) 
		$data[$k] .= ' - ' . $v;						// 普通赋值，这时  k!=null, v!=null.
	else
		$data[$k] = $v;									// 普通赋值，这时  k!=null, v!=null.
	return true;
}


// 404, 不用解释
function _404(){
	header('HTTP/1.1 404 Not Found');
	header('Status:404 Not Found');// 确保FastCGI模式下正常
	layout('404');
	header("refresh:3;url=".constant('REDIRECT_404')); 
}

function appExitInstance() {
	// 后置处理
	$file = p(AROOT, "action", 'ExitInstance.php');
	if (file_exists($file)) require($file); 
	// 致命错误捕获
	if ($e = error_get_last())  Debug::Log($e); 
}


// 用户登录相关

//用户标记
function uid($userid = null){
	if ($userid)	session('user_id', $userid);
	return 	session('user_id');
}
// 用户数据
// user('name'); read name
// user('name','wang'); set name
// user({name=>'wang',sex=>'1'}); replace whole profile, delete old one.
// user(); get whole profile;
// calls: user(); user(array); user(string); user(string,string);
function user($key = null, $val = null){
	static $me = array(); ($me) || $me=session('user_profile');
	if ((null === $key) && (null === $val)) return $me; //user();
	if (null === $val) {
		if (is_array($key)) {return session('user_profile', $me=$key);}	//user(array);
		else return $me[$key];							//user(string); noneed read session.
	}
	$me[$key] = $val;				//user(string,string), set value.
	return session('user_profile', $me);
}
// 用户是否登录
function isUserLogin(){ return (uid() != null); }
// 用户注销
function userOff(){
	session('user_id', null);
	session('user_profile', null);
}
